package com.aspose.cells;

class zbbh implements zahb, zaht {
   private int a;
   private int[] b;
   private int[] c;

   zbbh(int var1, int[] var2, int[] var3) {
      this.a = var1;
      this.b = var2;
      this.c = var3;
   }

   public int b() {
      return this.c.length;
   }

   public int c(int var1) {
      return this.b[var1];
   }

   public int a(int var1) {
      int var2 = zkd.a(this, var1, -1);
      return var2 < 0 ? this.a : this.c[var2];
   }

   public int a(int var1, int var2) {
      int var3 = zkd.a(this, var1, -1);
      if (var3 < 0) {
         label49: {
            if (var1 == var2) {
               return this.a;
            }

            var3 = -var3 - 1;
            if (var3 < this.b.length && this.b[var3] <= var2) {
               if (this.b[var3] != var2 && var3 != this.b.length - 1) {
                  break label49;
               }

               return (var2 - var1) * this.a + this.c[var3];
            }

            return (var2 - var1 + 1) * this.a;
         }
      } else {
         if (var1 == var2) {
            return this.c[var3];
         }

         if (var3 == this.b.length - 1) {
            return (var2 - var1) * this.a + this.c[var3];
         }
      }

      int var4 = zkd.a(this, var2, var3 + 1, this.c.length - 1);
      if (var4 < 0) {
         var4 = -var4 - 1;
      } else {
         ++var4;
      }

      int var5;
      for(var5 = (var2 - var1 + 1 - (var4 - var3)) * this.a; var3 < var4; ++var3) {
         var5 += this.c[var3];
      }

      return var5;
   }

   public void a(int[] var1) {
      int var2 = var1[0];
      int var3 = zkd.a(this, var2, -1);
      if (var3 < 0) {
         var3 = -var3 - 1;
      }

      int var4;
      int var5;
      if (var1[2] < 0) {
         var4 = -var1[2] - var1[1];
         if (var4 <= 0) {
            var1[2] = -var4;
            var1[1] = 0;
            this.a(var1);
            return;
         }

         --var2;
         if (var2 < 0) {
            var1[1] = 0;
            var1[2] = this.b[0] == 0 ? this.c[0] : this.a;
            return;
         }

         while(var3 > -1) {
            if (this.b[var3] < var2 && this.a > 0) {
               var5 = (var4 - 1) / this.a;
               if (var2 - var5 > this.b[var3]) {
                  var4 -= var5 * this.a;
                  var1[0] = var2 - var5;
                  var1[1] = this.a - var4;
                  var1[2] = var4;
                  return;
               }

               var4 -= (var2 - this.b[var3]) * this.a;
            }

            if (var4 <= this.c[var3]) {
               var1[0] = this.b[var3];
               var1[1] = this.c[var3] - var4;
               var1[2] = var4;
               return;
            }

            var4 -= this.c[var3];
            var2 = this.b[var3] - 1;
            --var3;
         }

         if (this.a == 0) {
            var1[0] = var2 + 1;
            var1[1] = 0;
            var1[2] = this.a;
            return;
         }

         var5 = (var4 - 1) / this.a;
         if (var2 < var5) {
            var1[0] = 0;
            var1[1] = 0;
            var1[2] = this.a;
         }

         var4 -= var5 * this.a;
         var1[0] = var2 - var5;
         var1[1] = this.a - var4;
         var1[2] = var4;
      } else {
         for(var4 = var1[1] + var1[2]; var3 < this.b.length; ++var3) {
            if (this.b[var3] > var2 && this.a > 0) {
               var5 = (var4 - 1) / this.a;
               if (var2 + var5 < this.b[var3]) {
                  var4 -= var5 * this.a;
                  var1[0] = var2 + var5;
                  var1[1] = var4;
                  var1[2] = this.a - var4;
                  return;
               }

               var4 -= (this.b[var3] - var2) * this.a;
            }

            if (var4 <= this.c[var3]) {
               var1[0] = this.b[var3];
               var1[1] = var4;
               var1[2] = this.c[var3] - var4;
               return;
            }

            var4 -= this.c[var3];
            var2 = this.b[var3] + 1;
         }

         if (this.a == 0) {
            var1[0] = var2 - 1;
            var1[1] = var4;
            var1[2] = -var4;
            return;
         }

         var5 = (var4 - 1) / this.a;
         var4 -= var5 * this.a;
         var1[0] = var2 + var5;
         var1[1] = var4;
         var1[2] = this.a;
      }

   }
}
